<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	template="/templates/modeloSistema.xhtml"
	xmlns:stella="http://stella.caelum.com.br/faces2">

	<ui:define name="menu">
		<ui:include src="/includes/menuPrincipal.xhtml" />
	</ui:define>

	<ui:define name="conteudo">

		<f:event listener="#{MBCliente.carregarClientes}" type="preRenderView" />

		<!-- Inicio do DataTable -->

		<h:form prependId="false" id="frmCliListagem">
			<p:dataTable id="tblCliListagem" widgetVar="tabelaCliListagem"
				value="#{MBCliente.clientes}" var="cliente"
				emptyMessage="Nenhum registro encontrado." paginator="true" rows="5"
				rowsPerPageTemplate="5,10,15,20"
				filteredValue="#{MBCliente.clienteFiltrados}">

				<f:facet name="header">
					<h:outputText value="Clientes Cadastrados" />
				</f:facet>

				<p:column headerText="Código" filterBy="#{cliente.codCliente}"
					sortBy="#{cliente.codCliente}">
					<h:outputText value="#{cliente.codCliente}" />
				</p:column>

				<p:column headerText="Nome" filterBy="#{cliente.nome}"
					sortBy="#{cliente.nome}">
					<h:outputText value="#{cliente.nome}" />
				</p:column>

				<p:column headerText="Endereço" filterBy="#{cliente.endereco}"
					sortBy="#{cliente.endereco}">
					<h:outputText value="#{cliente.endereco}" />
				</p:column>

				<p:column headerText="Bairro" filterBy="#{cliente.bairro}"
					sortBy="#{cliente.bairro}">
					<h:outputText value="#{cliente.bairro}" />
				</p:column>

				<p:column headerText="Telefone" sortBy="#{cliente.telefone}">
					<h:outputText value="#{cliente.telefone}" />
				</p:column>

				<p:column headerText="Cidade" filterBy="#{cliente.cidade.nome}"
					sortBy="#{cliente.cidade.nome}">
					<h:outputText value="#{cliente.cidade.nome}" />
				</p:column>


				<p:column headerText="Operações">
					<p:commandButton icon="ui-icon-trash" value="Excluir"
						oncomplete="PF('dlgCliExcluir').show();"
						update=":frmCliExcluir:pnlCliExcluir">
						<f:setPropertyActionListener value="#{cliente}"
							target="#{MBCliente.cliente}" />

					</p:commandButton>

					<p:commandButton icon="ui-icon-pencil" value="Editar"
						oncomplete="PF('dlgCliAlterar').show();"
						actionListener="#{MBCliente.prepararEditar}"
						update=":frmCliAlterar:pnlCliAlterar">
						<f:setPropertyActionListener value="#{cliente}"
							target="#{MBCliente.cliente}" />
					</p:commandButton>

				</p:column>



				<f:facet name="footer">
					<p:commandButton value="Novo" oncomplete="PF('dlgCliNovo').show();"
						actionListener="#{MBCliente.prepararNovo}"
						update=":msgGlobal :frmCliNovo:pnlCliNovo" />

					<p:commandButton value="Relatório"
						oncomplete="PF('dlgRel').show();"
						actionListener="#{MBCliente.prepararNovo}"
						update=":msgGlobal :frmCliRel:pnlCliRel" />
				</f:facet>
			</p:dataTable>
		</h:form>
		<!-- Fim do DataTable -->

		<!-- Inicio do Dialogo de Inclusão -->
		<p:dialog widgetVar="dlgCliNovo" closable="true" draggable="false"
			closeOnEscape="true" resizable="false" appendTo="@(body)"
			modal="true" header="Cadastrar Cliente">

			<h:form prependId="false" id="frmCliNovo">
				<h:panelGrid id="pnlCliNovo" columns="2">
					<p:outputLabel value="Nome: " for="nome2" />
					<p:inputText id="nome2" value="#{MBCliente.cliente.nome}"
						maxlength="50" size="40" required="true"
						requiredMessage="Campo nome obrigatório" />

					<p:outputLabel value="CPF: " for="cpf2" />
					<p:inputMask id="cpf2" value="#{MBCliente.cliente.cpf}"
						mask="999.999.999-99" required="true"
						requiredMessage="Campo CPF obrigatório">
						<stella:validateCPF />
					</p:inputMask>

					<p:outputLabel value="RG: " for="rg2" />
					<p:inputMask id="rg2" value="#{MBCliente.cliente.rg}"
						mask="99.999.999-9" required="true"
						requiredMessage="Campo RG obrigatório" />

					<p:outputLabel value="Endereço: " />
					<p:inputText value="#{MBCliente.cliente.endereco}" maxlength="50"
						size="40" />

					<p:outputLabel value="Numero: " />
					<p:inputText value="#{MBCliente.cliente.numero}" maxlength="50"
						size="40" validatorMessage="Informe um valor entre 1 e 99999">
						<f:validateDoubleRange minimum="1" maximum="99999" />
					</p:inputText>

					<p:outputLabel value="Bairro: " />
					<p:inputText value="#{MBCliente.cliente.bairro}" maxlength="50"
						size="40" />

					<p:outputLabel value="CEP: " />
					<p:inputMask value="#{MBCliente.cliente.cep}" mask="99.999-999" />

					<p:outputLabel for="telefone2" value="Telefone: " />
					<p:inputMask id="telefone2" value="#{MBCliente.cliente.telefone}"
						mask="(99)9999-9999" required="true"
						requiredMessage="Campo telefone obrigatório" />

					<p:outputLabel for="cidade2" value="Cidade: " />
					<p:selectOneMenu id="cidade2"
						value="#{MBCliente.cliente.cidade.codCidade}" filter="true"
						required="true" requiredMessage="Campo cidade obrigatório">
						<f:selectItem itemValue="" itemLabel="Selecione uma Cidade" />
						<f:selectItems value="#{MBCliente.listaCidade}" var="item"
							itemValue="#{item.codCidade}" itemLabel="#{item.nome}" />
					</p:selectOneMenu>



				</h:panelGrid>

				<h:panelGrid columns="2">
					<p:commandButton value="Salvar"
						actionListener="#{MBCliente.incluirCliente}"
						update=":msgGlobal :frmCliListagem:tblCliListagem"
						oncomplete="verificar(xhr, status, args, 'dlgCliNovo', 'tabelaCliListagem')" />
					<p:commandButton value="Cancelar"
						onclick="PF('dlgCliNovo').hide();" process="@this">
						<p:resetInput target="pnlCliNovo" />
					</p:commandButton>
				</h:panelGrid>
			</h:form>
		</p:dialog>


		<!-- 		Final do Dialogo de inclusão -->

		<!-- 		Inicio o Dialogo de exclusão -->
		<p:dialog widgetVar="dlgCliExcluir" closable="true" draggable="false"
			closeOnEscape="true" resizable="false" appendTo="@(body)"
			modal="true" header="Excluir Cliente">

			<h:form prependId="false" id="frmCliExcluir">
				<h:panelGrid id="pnlCliExcluir" columns="2">

					<p:outputLabel value="Código: " />
					<h:outputText value="#{MBCliente.cliente.codCliente}" />

					<p:outputLabel value="Nome: " />
					<h:outputText value="#{MBCliente.cliente.nome}" />

					<p:outputLabel value="CPF: " />
					<h:outputText value="#{MBCliente.cliente.cpf}" />

					<p:outputLabel value="RG: " />
					<h:outputText value="#{MBCliente.cliente.rg}" />

					<p:outputLabel value="Endereço: " />
					<h:outputText value="#{MBCliente.cliente.endereco}" />

					<p:outputLabel value="Numero: " />
					<h:outputText value="#{MBCliente.cliente.numero}" />

					<p:outputLabel value="Bairro: " />
					<h:outputText value="#{MBCliente.cliente.bairro}" />

					<p:outputLabel value="CEP: " />
					<h:outputText value="#{MBCliente.cliente.cep}" />

					<p:outputLabel value="Telefone: " />
					<h:outputText value="#{MBCliente.cliente.telefone}" />

					<p:outputLabel value="Cidade: " />
					<h:outputText value="#{MBCliente.cliente.cidade.nome}" />
				</h:panelGrid>

				<h:panelGrid columns="2">
					<p:commandButton value="Excluir"
						actionListener="#{MBCliente.excluirCliente()}" update="@all"
						oncomplete="PF('dlgCliExcluir').hide();" />
					<p:commandButton value="Cancelar"
						oncomplete="PF('dlgCliExcluir').hide();" />
				</h:panelGrid>
			</h:form>
		</p:dialog>

		<!-- Final do Dialogo de Exclusão -->

		<!-- 		Inicio do Dialogo de Atualização -->

		<p:dialog widgetVar="dlgCliAlterar" closable="true" draggable="false"
			closeOnEscape="true" resizable="false" appendTo="@(body)"
			modal="true" header="Alterar Cliente">

			<h:form prependId="false" id="frmCliAlterar">
				<h:panelGrid id="pnlCliAlterar" columns="2">

					<p:outputLabel value="Código: " />
					<h:outputText value="#{MBCliente.cliente.codCliente}" />

					<p:outputLabel for="nome1" value="Nome: " />
					<p:inputText id="nome1" value="#{MBCliente.cliente.nome}"
						maxlength="50" size="40" required="true"
						requiredMessage="Campo nome obrigatório" />

					<p:outputLabel for="cpf1" value="CPF: " />
					<p:inputMask id="cpf1" value="#{MBCliente.cliente.cpf}"
						mask="999.999.999-99" required="true"
						requiredMessage="Campo CPF obrigatório" />

					<p:outputLabel for="rg1" value="RG: " />
					<p:inputMask id="rg1" value="#{MBCliente.cliente.rg}"
						mask="99.999.999-9" required="true"
						requiredMessage="Campo RG obrigatório" />

					<p:outputLabel value="Endereço: " />
					<p:inputText value="#{MBCliente.cliente.endereco}" maxlength="50"
						size="40" />

					<p:outputLabel value="Numero: " />
					<p:inputText value="#{MBCliente.cliente.numero}" maxlength="50"
						size="40" validatorMessage="Informe um valor entre 1 e 99999">
						<f:validateDoubleRange minimum="1" maximum="99999" />
					</p:inputText>

					<p:outputLabel value="Bairro: " />
					<p:inputText value="#{MBCliente.cliente.bairro}" maxlength="50"
						size="40" />

					<p:outputLabel value="CEP: " />
					<p:inputMask value="#{MBCliente.cliente.cep}" mask="99.999-999" />

					<p:outputLabel for="telefone1" value="Telefone: " />
					<p:inputMask id="telefone1" value="#{MBCliente.cliente.telefone}"
						mask="(99)9999-9999" required="true"
						requiredMessage="Campo telefone obrigatório" />

					<p:outputLabel for="cidade1" value="Cidade: " />
					<p:selectOneMenu id="cidade1"
						value="#{MBCliente.cliente.cidade.codCidade}" filter="true"
						required="true" requiredMessage="Campo cidade obrigatório">
						<f:selectItem itemValue="" itemLabel="Selecione uma Cidade" />
						<f:selectItems value="#{MBCliente.listaCidade}" var="item"
							itemValue="#{item.codCidade}" itemLabel="#{item.nome}" />
					</p:selectOneMenu>

					<p:outputLabel value="Inativo: " />
					<p:selectBooleanCheckbox value="#{MBCliente.cliente.inativo}" />

				</h:panelGrid>

				<h:panelGrid columns="2">
					<p:commandButton value="Salvar"
						actionListener="#{MBCliente.alterarCliente}"
						update=":msgGlobal :frmCliListagem:tblCliListagem"
						oncomplete="verificar(xhr, status, args, 'dlgCliAlterar', 'tabelaCliListagem')" />
					<p:commandButton value="Cancelar"
						onclick="PF('dlgCliAlterar').hide();" process="@this">
						<p:resetInput target="pnlCliAlterar" />
					</p:commandButton>
				</h:panelGrid>
			</h:form>
		</p:dialog>

		<!-- 		Final do Dialogo de Atualização -->




		<p:dialog widgetVar="dlgRel" closable="true" draggable="false"
			closeOnEscape="true" resizable="false" appendTo="@(body)"
			modal="true" header="Relatório Cliente">
			
			


			<h:form prependId="false" id="frmCliRel">


				<h:panelGrid columns="1" id="pnlCliRel">
					<p:selectOneMenu id="cidade5" value="#{RelatorioMB.id}"
						filter="true" required="true"
						requiredMessage="Campo cidade obrigatório">
						<f:selectItem itemValue="" itemLabel="Selecione uma Cidade" />
						<f:selectItem itemValue="0" itemLabel="Todas" />
						<f:selectItems value="#{MBCliente.listaCidade}" var="item"
							itemValue="#{item.codCidade}" itemLabel="#{item.nome}" />
					</p:selectOneMenu>
					
					<p:outputLabel for="calendario" value="Data Alteração: "/>
					<p:calendar id="calendario" required="true"
					validatorMessage="Campo Obrigatório"
					pattern="dd/MM/yyyy"
					mask="true"
					value="#{RelatorioMB.dataAlteracao}"
					showOn="button">
					
					</p:calendar>
				</h:panelGrid>


				<h:panelGrid columns="2">
					<p:commandButton value="Gerar Relatório" icon="ui-icon-print"
						ajax="false" actionListener="#{RelatorioMB.relatorioParametro()}"
						onclick="PF('dlgRel').hide();" />
			
			<p:commandButton value="Cancelar"
						onclick="PF('dlgRel').hide();" process="@this">
						<p:resetInput target="pnlCliRel" />
					</p:commandButton>
			
				</h:panelGrid>
			</h:form>
		</p:dialog>

	</ui:define>
</ui:composition>